/**
 * Classe que representa um vagão para carregar líquidos.
 */
import java.util.ArrayList;

public class VagaoLiquidos extends Vagao {

	/**
	 * Variável usada para representar a capacidade do vagão
	 */
	private int capacidade;


	/* inicializar variáveis internas
	 * Nota: "conteudos" representa os conteúdos aceitos pelo vagão, você deve implementar
	 * a representação disso como achar conveniente (pode/deve criar novo atributo).
	 * Olhe a descrição do método
	 * conteudosAceitos() antes de implementar isso. 
	 * */
	private ArrayList<ConteudoLiquido> liquidostranspotaveis;//define os tipos que o vagao pode transportar

	protected boolean inflamabilidade;
	/*Contrutor*/
	public VagaoLiquidos(String codigo, int capacidade, ConteudoLiquido... conteudos) {
		super(codigo);
		this.capacidade = capacidade;
		liquidostranspotaveis = new ArrayList<ConteudoLiquido>();
		for(ConteudoLiquido i: conteudos)
			liquidostranspotaveis.add(i);
	}

	/* retornar capacidade do vagão */
	public int getCapacidade() {
		return capacidade;
	}

	/**
	 * Retorna a representação deste vagão como String.
	 */
	public String toString() {
		String retorno = "L|" + getCodigo();
		retorno += conteudosAceitos();
		if (inflamavel())
			retorno += "I";
		else
			retorno += "N";
		return retorno + "|" + getCapacidade();
	}

	/* Retornar uma String com a representação dos conteúdos aceitos.
	 * Formato: |conteudo1|conteudo2|...|conteudon|
	 * Representação String dos conteudos aceitos deve vir do método stringFormat.
	 * Considerar que sempre existirá pelo menos um tipo de conteúdo aceito.
	 * A ordem dos conteúdos deve ser a mesma dada no construtor (parâmetro conteudos) 
	 */
	private String conteudosAceitos() {
		String retorno = "|";
		for(ConteudoLiquido i: liquidostranspotaveis){
			if(i.equals(ConteudoLiquido.AGUA))
				retorno += "AG" + "|"; 
			if(i.equals(ConteudoLiquido.ALCOOL))
				retorno += "AL" + "|"; 
			if(i.equals(ConteudoLiquido.PETROLEO))
				retorno += "PE" + "|"; 
		}
		return retorno;

	}

	/* Retornar true se este vagão é potencialmente inflamável, false caso contrário
	 * Um vagão é potencialmente inflamável se seu conteúdo pode ser inflamável.
	 */
	public boolean inflamavel() {
		for(ConteudoLiquido i: liquidostranspotaveis){//percorre o vagão de conteúdo líquido
			if(ConteudoLiquido.inflamavel(i)){
				this.inflamabilidade = true;
				return true;
			}
		}
		this.inflamabilidade = false;
		//nenhum carro inflamavel
		return false;
	}
}